home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / source / f2c3.2src.lha / f2c-for-SASC651 / libF77 / tp_erf.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  696 b   |  42 lines

  1. #define ITMAX 100
  2. #define EPS   3.0e-7
  3.  
  4. static double gser(double a, double x, double *gamser, double *gln)
  5. {
  6.   int n;
  7.   double sum, del, ap;
  8.  
  9.   *gln = gammln(a);
  10.  
  11.  
  12. See Press et al. pp.704-
  13.  
  14. ####################
  15.  
  16. static double gammp(double a, double x)
  17. {
  18.   double gammcf, gln;
  19.  
  20.   if (x < 0.0 || a <= 0.0) exception
  21.   if (x < a + 1.0)
  22.     gser(a, x, &gammcf, &gln);
  23.   else {
  24.     gcf(a, x, &gammcf, &gln);
  25.     gammcf = 1.0 - gammcf;
  26.   }
  27.   if (gammcf < 0.0) gammcf = 0.0;
  28.   return gammcf;
  29. }
  30.  
  31. double erf(double x)
  32. {
  33.   if (x < 0.0) return -gammp(0.5, x * x);
  34.   else return gammp(0.5, x * x);
  35. }
  36.  
  37. double erfc(double x)
  38. {
  39.   if (x < 0.0) return 1.0 + gammp(0.5, x * x);
  40.   else return gammq(0.5, x * x);
  41. }
  42.